'use strict';
const { Controller } = require('egg');
const path = require('path');
const fs = require('fs');
const OSS = require('ali-oss');

class HomeController extends Controller {
  // 普通文件上传
  async uploadAvator() {
    const { ctx } = this;
    // 获取上传的文件
    const file = ctx.request.files[0];
    console.log(file);
    // 获取保存文件的路径
    const publicPath = path.resolve(__dirname, '../public');
    // 复制临时文件 放入public 目录下
    await fs.promises.copyFile(file.filepath, path.join(publicPath, file.filename));
    // 清除临时文件
    ctx.cleanupRequestFiles();
    // 返回信息
    ctx.body = {
      code: 200,
      data: {
        url: 'http://localhost:7001/public/' + file.filename,
      },
    };
  }

  // OSS上传
  async uploadOss() {
    const { ctx } = this;
    // 获取上传的文件
    const file = ctx.request.files[0];
    // 解构出文件名和文件路由
    const { filename, filepath } = file;
    console.log(file);
    const client = new OSS({
      // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
      region: 'oss-cn-shanghai',
      // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
      accessKeyId: 'LTAI5tRJN12CtGto89ieiFRC',
      accessKeySecret: 'MM5pSPPWby2xDcGWyvtsvjkCa0LnPN',
      // 填写Bucket名称。
      bucket: 'smlz-1',
    });
    const result = await client.put(filename, path.normalize(filepath));
    // 删除临时文件
    ctx.cleanupRequestFiles();
    ctx.body = {
      code: 200,
      data: result.url,
      msg: '上传成功',
    };
  }

  // OSS列表
  async uploadOssList() {
    const { ctx } = this;
    const client = new OSS({
      // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
      region: 'oss-cn-shanghai',
      // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
      accessKeyId: 'LTAI5tRJN12CtGto89ieiFRC',
      accessKeySecret: 'MM5pSPPWby2xDcGWyvtsvjkCa0LnPN',
      // 填写Bucket名称。
      bucket: 'smlz-1',
    });
    // 不带任何参数，默认最多返回100个文件。 文件列表数据在result中的objects对象中
    const result = await client.list();
    ctx.body = {
      code: 200,
      data: result.objects,
      msg: '数据获取成功',
    };
  }
  // 删除图片
  async deleteImage() {
    const { ctx } = this;
    // 获取前端传递的文件名 
    const { name } = ctx.request.query;
    const client = new OSS({
      // yourregion填写Bucket所在地域。以华东1（杭州）为例，Region填写为oss-cn-hangzhou。
      region: 'oss-cn-shanghai',
      // 阿里云账号AccessKey拥有所有API的访问权限，风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维，请登录RAM控制台创建RAM用户。
      accessKeyId: 'LTAI5tRJN12CtGto89ieiFRC',
      accessKeySecret: 'MM5pSPPWby2xDcGWyvtsvjkCa0LnPN',
      // 填写Bucket名称。
      bucket: 'smlz-1',
    });
    client.useBucket('smlz-1');
    // 不带任何参数，默认最多返回100个文件。 
    const result = await client.delete(name);
    ctx.body = {
      code: 200,
      data: result,
      msg: '图片删除成功',
    };
  }
}

module.exports = HomeController;
